package cube.utils.exec;

import cube.utils.TimeUtil;

/**
 * 周期执行器
 * 
 * @author abiao
 */
public abstract class PeriodExecutor {

    /**
     * 周期执行器
     */
    private Runnable period;

    /**
     * 周期执行器
     */
    public PeriodExecutor(final int time) {
        period = new Runnable() {
            public void run() {
                while (true) {
                    PeriodExecutor.this.run();
                    TimeUtil.sleep(time);
                }
            }
        };
    }

    /**
     * 启动周期执行器
     */
    public void execute() {
        new Thread(period).start();
    }

    /**
     * 执行动作
     */
    public abstract void run();
}
